前兩天,我先決定了要做「泰語小旅伴」,也把第一版 App 想做的內容大致整理出來。
照理說,接下來應該可以開始寫程式了。
但真的準備動手時,我馬上遇到一個很基本的問題:
這個到底要在哪裡做?ChatGPT 還是 Codex?
現在看起來,這個問題好像有點簡單,但對當時完全沒有開發經驗的我來說,我其實連 ChatGPT 和 Codex 在這個專案裡各自應該負責什麼,都還沒有概念。
在真正開始之前,我對 Codex 的理解很簡單:
「比較會寫程式的 ChatGPT。」
兩個都是 AI,也都可以用文字告訴它我要做什麼,所以我一開始很自然地想:
那我是不是直接去 Codex 說「幫我做泰語學習 App」就好了?
但開始討論之後,我才發現這樣好像少了一個很重要的步驟。
因為我自己連需求都還沒有完全搞懂。
例如我要做「基本問候」課程,這句話看起來很清楚,但再往下問,就會出現很多問題:
要顯示哪些內容?中文、泰文、羅馬拼音都要嗎?要不要有發音?課程要怎麼從首頁進去?做完之後,我又要怎麼判斷它有沒有符合需求?
如果連我自己都還說不清楚,直接把一個很大的需求丟給 Codex,它就算真的寫出東西,我可能也不知道該怎麼驗收。
所以我開始覺得,ChatGPT 和 Codex 好像不只是「兩個都會寫程式的 AI」。
後來我慢慢形成一個工作方式。
遇到新的功能時,我會先留在 ChatGPT 討論,例如:
對我來說,這一步很重要。
因為我現在最大的問題,不是「少打一行程式碼」,而是很多時候,我根本不知道自己應該問什麼。
ChatGPT 可以先幫我把一個很模糊的想法拆開。
像「我要做泰語學習 App」,就可以先拆成目標使用者、旅遊情境、教材內容和功能範圍;到了真正做功能時,也可以再繼續拆成比較明確的小任務。
所以目前我對 ChatGPT 的理解比較像:
先幫我把事情想清楚,再開始做。
等需求比較清楚之後,才輪到 Codex。
這時候交給 Codex 的東西,就不應該再只是:
幫我做一個泰語 App。
而是比較具體的工作。
例如:
建立專案需要的基本檔案。
或者:
把首頁改成手機 App 的樣子,但先不要做真正的互動功能。
再例如:
讓「基本問候」可以點進去,顯示四句教材,而且可以返回首頁。
這些任務有一個共同點:
範圍比較清楚,而且做完之後,我知道要檢查什麼。
Codex 負責的,就比較接近真正進到專案裡工作,例如建立檔案、修改程式、執行指令和測試結果。
所以我後來先把兩者的分工簡單記成:
ChatGPT
↓
討論需求
理解概念
拆小任務
想清楚怎麼驗收
Codex
↓
建立檔案
修改程式
執行測試
回報結果
這不是什麼正式規則,只是對目前的我來說,比較容易掌握的一種方式。
看到這裡,可能會有一個問題:
既然 Codex 本來就會寫程式,為什麼不全部跟 Codex 討論就好?
對我來說,最大的原因是:
我不想只拿到結果。
我想知道它為什麼這樣做。
假設 Codex 一次改了四個檔案,最後跟我說功能完成了,如果我對這四個檔案原本在做什麼完全沒有概念,那我其實很難判斷這次修改到底合不合理。
更不用說如果壞掉,我可能連該從哪裡看都不知道。
所以目前我的做法不是追求:
怎麼樣可以最快讓 AI 把 App 寫完?
而是:
怎麼樣可以讓 AI 幫我做的同時,我還能跟得上現在發生什麼?
這兩個目標其實不太一樣。
如果只是追求速度,也許一句很大的 Prompt 就可以讓 AI 一口氣產生很多程式碼;但對現在的我來說,程式一次出現越多,我反而越難理解。
所以除了分清 ChatGPT 和 Codex,我也替自己定了一個原則:
一次只做一個範圍明確的小功能。
例如今天只處理專案骨架,就先把骨架弄好;要做首頁,就先做首頁;要做第一個課程,就先讓第一個課程真的能操作。
不要一開始就把課程、測驗、發音、學習紀錄、PWA 全部一起交出去。
這樣做的好處是,Codex 每次修改的範圍比較小,我也比較容易知道:
這次到底改了什麼?原本想解決什麼?最後有沒有真的做到?
如果結果不對,也比較容易回頭找是哪一次修改出了問題。
對完全不會程式的我來說,「慢一點」反而可能比較快,因為至少我還知道自己現在走到哪裡。
這也是我開始開發之後,慢慢建立起來的一個觀念。
Codex 說:
完成。
不代表我就可以直接進下一個功能。
我還是需要看它做了什麼。
如果有畫面,就自己打開來看;如果有按鈕,就自己按;如果它說某個功能正常,我也要想辦法確認。
因為 AI 可以幫忙寫程式、幫忙測試,但最後這是不是我要的 App,還是得由我來判斷。
這件事對我來說其實有點矛盾。
我就是因為不會寫程式,才需要 AI 幫忙;但同時,我又不能因為不會寫,就把 AI 做的所有事情直接當成正確答案。
所以這 30 天除了學怎麼寫程式,我覺得另一個很重要的練習可能是:
學著怎麼驗收 AI 寫的程式。
整理到最後,目前我打算用這樣的方式開發「泰語小旅伴」:
想到一個功能
↓
先跟 ChatGPT 討論
↓
搞懂這個功能要解決什麼
↓
拆成一個範圍明確的小任務
↓
交給 Codex 實作
↓
Codex 測試並回報
↓
我自己再實際操作、驗收
↓
有問題就回來討論、修改
這個流程之後一定還會繼續調整,畢竟我現在才剛開始。
但至少比一開始的:
「Codex 應該就是比較會寫程式的 ChatGPT 吧?」
清楚多了。
前三天其實都還沒有正式進入大量程式碼。
Day 1 決定自己想做什麼,Day 2 把 App 的需求縮小,Day 3 則先弄清楚 ChatGPT 和 Codex 要怎麼一起工作。
接下來,終於要真的建立第一個專案。
但對完全沒寫過程式的我來說,又會馬上碰到三個名字:
HTML、CSS、JavaScript。
我知道它們跟網頁有關,但它們到底各自負責什麼?為什麼一個 App 要拆成好幾個檔案?而且 Codex 建完之後,我到底要看哪裡,才知道它有沒有成功?
下一篇,就從第一個真正建立出來的「泰語小旅伴」專案開始。